signature TYPE_CHECK_MAIN_STRUCTS =
sig
  structure Table : TABLE
  structure Ast : AST
  structure Ir : IR
  structure Types2 : TYPES2
  sharing Table.Atoms = Ast.Atoms = Types2.Atoms = Table.Types.Atoms = Ir.Atoms
  sharing Types2 = Table.Types = Ir.Types
end

signature TYPE_CHECK_MAIN =
sig
  include TYPE_CHECK_MAIN_STRUCTS
  
  val typeCkProg : Ast.Program.t -> Ir.Program.t
end
